﻿#ifndef MENUWIDGET_H
#define MENUWIDGET_H

#include <QObject>
#include <QWidget>
#include "ui/menuWidget/menuItemBtn/MenuItemBtn.h"
#include <QVBoxLayout>
#include <QList>
#include "ui/QSS/GlobalQss.h"
#include <QColor>
#include <utility>

/*
 * 前端布局的第一部分菜单组件
 */

//用于表示当前的按钮类型（按照顺序从上到下）
enum menuKind{
    Camera = 0,         // 相机状态框
    Show = 1,           // 显示状态框
    Setting = 10        // 设置对话框
};

class menuWidget : public QWidget
{
    Q_OBJECT
public:
    explicit menuWidget(QWidget *parent = nullptr);
    bool setBtnStyleSheet(const QString &qss);                  // 修改当前菜单中所有控件的布局样式
    bool setBackgroundColorFormPalette(const QColor& color);    // 通过调色板设置该组件的背景色
    void SettingBtnClose();                                     // 将设置按钮设置为关闭
private:
    MenuItemBtn *cameraBtn;                                     // 望远镜按钮
    MenuItemBtn *showBtn;                                       // 显示设置按钮
    QWidget *Space;                                             // 空白处理控件
    MenuItemBtn *settingBtn;                                    // 设置按钮

    QVBoxLayout *VLayout;                                       // 该部分的垂直布局
    QList<std::pair<MenuItemBtn* , menuKind>> Btns;             // 保存当前menuWidget中的全部按钮
    MenuItemBtn *currentBtn = nullptr;                          // 表示当前选中按钮
    menuKind currentBtnKind = menuKind::Camera;                 // 表示当前按钮，主要用于传递给上层再传递给optionWidget类

signals:
    void menuBtnClicked(int);                                   // 发送点击按钮的序号
private slots:
    void ClickedBtn(MenuItemBtn *);                             // 处理点击事件的槽函数
};

#endif // MENUWIDGET_H
